home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 2
/
The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO
/
os2
/
pccts.zip
/
GENMK.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-12-08
|
2KB
|
116 lines
/*
* genmk -- a program to make makefiles for PCCTS
*
* genmk project f1.g f2.g f3.g ...
*
* where fi.g are the grammar files you want a makefile for
*
* ANTLR 1.06
* Terence John Parr 1989, 1990, 1991, 1992
* Purdue University
*/
#include <stdio.h>
char *dlg = "parser.dlg";
char *err = "err.c";
char *hdr = "stdpccts.h";
char *tok = "tokens.h";
main(argc, argv)
int argc;
char **argv;
{
char *project;
char **files;
if ( argc < 3 )
{
fprintf(stderr, "genmk: genmk project f1.g f2.g f3.g ...\n");
exit(-1);
}
project = argv[1];
files = &argv[2];
mk(project, files, argc-2);
return 0;
}
mk(project, files, n)
char *project;
char **files;
int n;
{
printf("#\n");
printf("# PCCTS makefile for: ");
pfiles(files, n, NULL);
printf("\n");
printf("#\n");
printf("DLG_FILE = %s\n", dlg);
printf("ERR_FILE = %s\n", err);
printf("HDR_FILE = %s\n", hdr);
printf("TOK_FILE = %s\n", tok);
printf("K = 1\n");
printf("ANTLR_H = .\n");
printf("BIN = .\n");
printf("ANTLR = $(BIN)/antlr\n");
printf("DLG = $(BIN)/dlg\n");
printf("CFLAGS = -I. -I$(ANTLR_H)\n");
printf("AFLAGS = -fe %s -fh %s -fl %s -ft %s -k $(K) -gk\n",
err, hdr, dlg, tok);
printf("DFLAGS = -C2 -i\n");
printf("GRM = ");
pfiles(files, n, NULL);
printf("\n");
printf("SRC = scan.c ");
pfiles(files, n, "c");
printf(" err.c\n");
printf("OBJ = scan.o ");
pfiles(files, n, "o");
printf(" err.o\n");
printf("\n%s: $(OBJ) $(SRC)\n", project);
printf(" cc -o %s $(CFLAGS) $(OBJ)\n", project);
printf("\n");
pfiles(files, n, "c");
printf(" %s : ", dlg);
pfiles(files, n, NULL);
printf("\n");
printf(" $(ANTLR) $(AFLAGS) ");
pfiles(files, n, NULL);
printf("\n");
printf("\n");
printf("scan.c : %s\n", dlg);
printf(" $(DLG) $(DFLAGS) %s scan.c\n", dlg);
printf("\n");
}
pfiles(files, n, suffix)
char **files;
int n;
char *suffix;
{
int first=1;
while ( n>0 )
{
char *p = &(*files)[strlen(*files)-1];
if ( !first ) putchar(' ');
first=0;
while ( p > *files && *p != '.' ) --p;
if ( p == *files )
{
fprintf(stderr,
"genmk: filenames must be file.suffix format: %s\n",
*files);
exit(-1);
}
if ( suffix == NULL ) printf("%s", *files);
else
{
*p = '\0';
printf("%s.%s", *files, suffix);
*p = '.';
}
files++;
--n;
}
}